Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / backend / eect / packs / test_missing_path_pack.py

Displaying Raw • Download


tests/backend/eect/packs/test_missing_path_pack.py e5756d7ab065475a18acdcafc008a767fcff87e0 (e5756d7a) Text, 3.94 KB

T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""MissingPathPack: recoverable path outcomes for direct vs propagated send."""

Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations

Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3AsyncMockTb4b4b4, Te6edf3MagicMockTb4b4b4, Te6edf3patch

Tff7b72import T7ee787pytest

Tff7b72from T7ee787meshchatxT7ee787.T7ee787meshchat Tff7b72import Te6edf3ReticulumMeshChat
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787reticulum_pathfinding Tff7b72import Te6edf3OutboundPathOutcome
Tff7b72from T7ee787testsT7ee787.T7ee787backendT7ee787.T7ee787eectT7ee787.T7ee787asserts Tff7b72import Te6edf3assert_recoverable_missing_path
Tff7b72from T7ee787testsT7ee787.T7ee787backendT7ee787.T7ee787eectT7ee787.T7ee787harness Tff7b72import Te6edf3eect_scenario

Te6edf3pytestmark Tff7b72= Te6edf3pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffeect


Tf0883e@pytestTff7b72.Td2a8fffixture
Tff7b72def Td2a8ffsend_appTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3app Tff7b72= Te6edf3ReticulumMeshChatTff7b72.Td2a8ff__new__Tb4b4b4(Te6edf3ReticulumMeshChatTb4b4b4)
Te6edf3appTff7b72.Td2a8ffcurrent_context Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffconfig Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffdatabase Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffreticulum Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffmessage_router Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ff_await_transport_path Tff7b72= Te6edf3AsyncMockTb4b4b4(
Te6edf3return_valueTff7b72=Te6edf3OutboundPathOutcomeTb4b4b4(Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6ffreused_valid_pathTa5d6ff"Tb4b4b4, Tff7b72FalseTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffget_current_icon_hash Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72NoneTb4b4b4)
Te6edf3appTff7b72.Td2a8ffdb_upsert_lxmf_message Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ffwebsocket_broadcast Tff7b72= Te6edf3AsyncMockTb4b4b4(Tb4b4b4)
Te6edf3appTff7b72.Td2a8ff_is_contact Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3return_valueTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3appTff7b72.Td2a8ff_convert_webm_opus_to_ogg Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3side_effectTff7b72=Tff7b72lambda Te6edf3bTb4b4b4: Te6edf3bTb4b4b4)
Te6edf3appTff7b72.Td2a8ffhandle_lxmf_message_progress Tff7b72= Te6edf3AsyncMockTb4b4b4(Tb4b4b4)
Te6edf3ctx Tff7b72= Te6edf3appTff7b72.Td2a8ffcurrent_context
Te6edf3ctxTff7b72.Td2a8ffmessage_router Tff7b72= Te6edf3appTff7b72.Td2a8ffmessage_router
Te6edf3ctxTff7b72.Td2a8ffdatabase Tff7b72= Te6edf3appTff7b72.Td2a8ffdatabase
Te6edf3ctxTff7b72.Td2a8ffconfig Tff7b72= Te6edf3appTff7b72.Td2a8ffconfig
Te6edf3ctxTff7b72.Td2a8fflocal_lxmf_destination Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3ctxTff7b72.Td2a8fflocal_lxmf_destinationTff7b72.Td2a8ffhexhash Tff7b72= Ta5d6ff"Ta5d6fflocal_hashTa5d6ff"
Te6edf3ctxTff7b72.Td2a8ffforwarding_manager Tff7b72= Tff7b72None
Tff7b72return Te6edf3app


Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_eect_direct_blocks_when_path_unavailableTb4b4b4(Te6edf3send_appTb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3eect_scenarioTb4b4b4(Ta5d6ff"Ta5d6ffpath.direct.blocks_when_unavailableTa5d6ff"Tb4b4b4) Tff7b72as Tb4b4b4(Te6edf3_sTb4b4b4, Te6edf3_seedTb4b4b4, Te6edf3_rngTb4b4b4)Tb4b4b4:
Te6edf3destination_hash Tff7b72= Ta5d6ff"Ta5d6ffaaTa5d6ff" Tff7b72* T79c0ff16
Te6edf3send_appTff7b72.Td2a8ffrecall_identity Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3return_valueTff7b72=Te6edf3MagicMockTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3send_appTff7b72.Td2a8ff_await_transport_path Tff7b72= Te6edf3AsyncMockTb4b4b4(
Te6edf3return_valueTff7b72=Te6edf3OutboundPathOutcomeTb4b4b4(Tff7b72FalseTb4b4b4, Ta5d6ff"Ta5d6ffnew_path_requestedTa5d6ff"Tb4b4b4, Tff7b72TrueTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72with Te6edf3pytestTff7b72.Td2a8ffraisesTb4b4b4(Tf85149TimeoutErrorTb4b4b4) Tff7b72as Te6edf3caughtTb4b4b4:
Tff7b72await Te6edf3send_appTff7b72.Td2a8ffsend_messageTb4b4b4(
Te6edf3destination_hashTff7b72=Te6edf3destination_hashTb4b4b4,
Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffhiTa5d6ff"Tb4b4b4,
Te6edf3delivery_methodTff7b72=Ta5d6ff"Ta5d6ffdirectTa5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3assert_recoverable_missing_pathTb4b4b4(Te6edf3caughtTff7b72.Td2a8ffvalueTb4b4b4)
Te6edf3send_appTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffhandle_outboundTff7b72.Td2a8ffassert_not_calledTb4b4b4(Tb4b4b4)


Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_eect_propagated_skips_path_awaitTb4b4b4(Te6edf3send_appTb4b4b4)Tb4b4b4:
Tff7b72with Te6edf3eect_scenarioTb4b4b4(Ta5d6ff"Ta5d6ffpath.propagated.skips_awaitTa5d6ff"Tb4b4b4) Tff7b72as Tb4b4b4(Te6edf3_sTb4b4b4, Te6edf3_seedTb4b4b4, Te6edf3_rngTb4b4b4)Tb4b4b4:
Te6edf3destination_hash Tff7b72= Ta5d6ff"Ta5d6ffaaTa5d6ff" Tff7b72* T79c0ff16
Te6edf3send_appTff7b72.Td2a8ffrecall_identity Tff7b72= Te6edf3MagicMockTb4b4b4(Te6edf3return_valueTff7b72=Te6edf3MagicMockTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3send_appTff7b72.Td2a8ff_await_transport_path Tff7b72= Te6edf3AsyncMockTb4b4b4(
Te6edf3return_valueTff7b72=Te6edf3OutboundPathOutcomeTb4b4b4(Tff7b72FalseTb4b4b4, Ta5d6ff"Ta5d6ffnew_path_requestedTa5d6ff"Tb4b4b4, Tff7b72TrueTb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3send_appTff7b72.Td2a8ffconfigTff7b72.Td2a8ffauto_send_failed_messages_to_propagation_nodeTff7b72.Td2a8ffgetTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3send_appTff7b72.Td2a8ffconfigTff7b72.Td2a8ffinclude_display_name_with_messageTff7b72.Td2a8ffgetTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3send_appTff7b72.Td2a8ffconfigTff7b72.Td2a8ffinclude_icon_with_messageTff7b72.Td2a8ffgetTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3send_appTff7b72.Td2a8ffconfigTff7b72.Td2a8ffinclude_signature_with_messageTff7b72.Td2a8ffgetTff7b72.Td2a8ffreturn_value Tff7b72= Tff7b72False
Te6edf3mock_msg Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3mock_msgTff7b72.Td2a8ffhash Tff7b72= Ta5d6ffbTa5d6ff"Tffea00\x01Ta5d6ff" Tff7b72* T79c0ff16
Te6edf3mock_msgTff7b72.Td2a8fffields Tff7b72= Tb4b4b4{Tb4b4b4}
Tff7b72with Tb4b4b4(
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.RNS.DestinationTa5d6ff"Tb4b4b4, Te6edf3return_valueTff7b72=Te6edf3MagicMockTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.meshchat.LXMF.LXMessageTa5d6ff"Tb4b4b4, Te6edf3return_valueTff7b72=Te6edf3mock_msgTb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(
Ta5d6ff"Ta5d6ffmeshchatx.meshchat.RNS.Identity.current_ratchet_idTa5d6ff"Tb4b4b4, Te6edf3return_valueTff7b72=Tff7b72None
Tb4b4b4)Tb4b4b4,
Te6edf3patchTb4b4b4(
Ta5d6ff"Ta5d6ffmeshchatx.meshchat.convert_lxmf_message_to_dictTa5d6ff"Tb4b4b4,
Te6edf3return_valueTff7b72=Tb4b4b4{Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff01Ta5d6ff" Tff7b72* T79c0ff16Tb4b4b4, Ta5d6ff"Ta5d6ffstateTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffoutboundTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3result Tff7b72= Tff7b72await Te6edf3send_appTff7b72.Td2a8ffsend_messageTb4b4b4(
Te6edf3destination_hashTff7b72=Te6edf3destination_hashTb4b4b4,
Te6edf3contentTff7b72=Ta5d6ff"Ta5d6ffhiTa5d6ff"Tb4b4b4,
Te6edf3delivery_methodTff7b72=Ta5d6ff"Ta5d6ffpropagatedTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3result Tff7b72is Te6edf3mock_msg
Te6edf3send_appTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffhandle_outboundTff7b72.Td2a8ffassert_called_onceTb4b4b4(Tb4b4b4)
Te6edf3send_appTff7b72.Td2a8ff_await_transport_pathTff7b72.Td2a8ffassert_not_calledTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────